<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .content {
        margin: 5px;
        display: inline-block;
        padding: 5px;
        border: 1px solid #ccc;
        border-radius: 5px;
      }
      .btn {
        margin: 5px;
        display: inline-block;
        padding: 5px;
        border: 1px solid #ccc;
        border-radius: 5px;
      }
      .active {
        text-decoration: line-through;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <input
        type="text"
        v-model="value"
        @keyup.enter="onKeyupEnter"
        name=""
        id=""
      />
      <h1>未完成{{unfinishedList}}</h1>
      <ul>
        <li v-for="(item, index) in list">
          <span class="btn">
            <input
              type="checkbox"
              :checked="item.check"
              @change="onCheckChange(item)"
            />
          </span>
          <span class="content" :class="item.check ? 'active' : '' ">
            {{item.value}}
          </span>
          <span class="btn" @click="removeItem(index)">删除</span>
        </li>
      </ul>
      <h1>已完成</h1>
      <!-- 已经完成，就是在过滤 用户选中的数据，也就是check为true的数据 -->
      <ul>
        <li v-for="(item, index) in checkList">
          <span class="content" :class="item.check ? 'active' : '' ">
            {{item.value}}
          </span>
          <span class="btn" @click="removeItem(index)">删除</span>
        </li>
      </ul>
      <hr />
      <button @click="handleAllTask">全部完成</button>
      <button @click="handleRemoveAllTask">全部删除</button>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script src="./node_modules/mockjs/dist/mock.js"></script>
    <script>
      /*
      1. vue安装 npm 下载 script引入
      2. 指令（循环/判断/显示/事件/动态数据绑定）
      3. 属性（methods/watch/computed） methods: {}
      4. 方法：created(){ 处理数据 } mounted(){ 处理dom } 
      */

      const app = new Vue({
        el: '#app',
        // 可以是对象也可以是函数，以后都是函数
        data: {
          list: [
            { id: 1, value: '今天要看电影', check: false },
            { id: 2, value: '今天是5月21', check: false },
            { id: 3, value: '今天是5月22', check: false },
          ],
          value: '',
        },
        created() {},
        mounted() {},
        methods: {
          onCheckChange(item) {
            console.log(item, 'item')
            item.check = !item.check
          },
          onKeyupEnter(e) {
            // console.log(e.target.value)
            // console.log(this.value)
            this.list.push({
              id: Date.now(),
              value: this.value,
              check: false,
            })
            this.value = ''
          },
          removeItem(index) {
            this.list.splice(index, 1)
          },
          // 全部完成任务
          handleAllTask() {
            this.list.forEach((item) => {
              item.check = !item.check
            })
          },
          // 删除全部任务
          handleRemoveAllTask() {
            this.list = []
          },
        },
        watch: {},
        computed: {
          // 过滤出check为true的数据，计算属性可以直接当成响应式数据使用
          checkList() {
            return this.list.filter((v) => v.check)
          },
          unfinishedList() {
            return this.list.filter((v) => !v.check).length
          },
        },
      })
    </script>
  </body>
</html>
